package bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import model.Cbo;
import model.Conhecimentotecnologico;
import model.Curso;
import model.Empregador;
import model.Vaga;
import model.Vagaconhectec;
import model.Vagacurso;
import dao.DAOVaga;

@ManagedBean(name="MBVaga")
public class MBVaga {
	private Vaga beanVaga = new Vaga();
	private Vagaconhectec beanVagaCT = new Vagaconhectec();
	private Vagacurso beanVagaCurso = new Vagacurso();
	
	private Empregador emp = new Empregador();
	private Conhecimentotecnologico ct = new Conhecimentotecnologico();
	private Curso curso = new Curso();
	private Cbo cbo = new Cbo();
	
	private String nomeCT; // para pesquisar CT
	private String nomeCurso; // para pesquisar Curso
	private String nomeCBO; // para~pesquisar CBO
	

	private DAOVaga daoVaga = new DAOVaga();
	
	
	@SuppressWarnings("rawtypes")
	private DataModel listaCTs;
	@SuppressWarnings("rawtypes")
	private DataModel listaCursos;
	@SuppressWarnings("rawtypes")
	private DataModel listaCBOs;	
	
	private List<Vagaconhectec> CTs = new ArrayList<Vagaconhectec>();
	private List<Vagacurso> Cursos = new ArrayList<Vagacurso>();
	private List<Vagacurso> CBOs = new ArrayList<Vagacurso>();

	public Vaga getBeanVaga() {
		return beanVaga;
	}

	public void setBeanVaga(Vaga beanVaga) {
		this.beanVaga = beanVaga;
	}	
	
	public Cbo getCbo() {
		return cbo;
	}

	public void setCbo(Cbo cbo) {
		this.cbo = cbo;
	}

	public String getNomeCBO() {
		return nomeCBO;
	}

	public void setNomeCBO(String nomeCBO) {
		this.nomeCBO = nomeCBO;
	}

	@SuppressWarnings("rawtypes")
	public DataModel getListaCBOs() {
		return listaCBOs;
	}

	@SuppressWarnings("rawtypes")
	public void setListaCBOs(DataModel listaCBOs) {
		this.listaCBOs = listaCBOs;
	}

	public List<Vagacurso> getCBOs() {
		return CBOs;
	}

	public void setCBOs(List<Vagacurso> cBOs) {
		CBOs = cBOs;
	}

	public Conhecimentotecnologico getCt() {
		return ct;
	}

	public void setCt(Conhecimentotecnologico ct) {
		this.ct = ct;
	}
	
	public String getNomeCurso() {
		return nomeCurso;
	}

	public void setNomeCurso(String nomeCurso) {
		this.nomeCurso = nomeCurso;
	}

	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	public String getNomeCT() {
		return nomeCT;
	}

	public void setNomeCT(String nomeCT) {
		this.nomeCT = nomeCT;
	}

	public Vagaconhectec getBeanVagaCT() {
		return beanVagaCT;
	}

	public void setBeanVagaCT(Vagaconhectec beanVagaCT) {
		this.beanVagaCT = beanVagaCT;
	}

	public Vagacurso getBeanVagaCurso() {
		return beanVagaCurso;
	}

	public void setBeanVagaCurso(Vagacurso beanVagaCurso) {
		this.beanVagaCurso = beanVagaCurso;
	}

	public DAOVaga getDaoVaga() {
		return daoVaga;
	}

	public void setDaoVaga(DAOVaga daoVaga) {
		this.daoVaga = daoVaga;
	}

	public Empregador getEmp() {
		return emp;
	}

	public void setEmp(Empregador emp) {
		this.emp = emp;
	}

	@SuppressWarnings("rawtypes")
	public DataModel getListaCTs() {
		return listaCTs;
	}

	@SuppressWarnings("rawtypes")
	public void setListaCTs(DataModel listaCTs) {
		this.listaCTs = listaCTs;
	}

	@SuppressWarnings("rawtypes")
	public DataModel getListaCursos() {
		return listaCursos;
	}

	@SuppressWarnings("rawtypes")
	public void setListaCursos(DataModel listaCursos) {
		this.listaCursos = listaCursos;
	}

	public List<Vagaconhectec> getCTs() {
		return CTs;
	}

	public void setCTs(List<Vagaconhectec> cTs) {
		CTs = cTs;
	}

	public List<Vagacurso> getCursos() {
		return Cursos;
	}

	public void setCursos(List<Vagacurso> cursos) {
		Cursos = cursos;
	}

	public void selecionarCT(){
		//setCt((Conhecimentotecnologico) listaCTs.getRowData());
		ct = (Conhecimentotecnologico) listaCTs.getRowData(); 
		System.out.println(getCt().getNomeConhecTec());
	}	
	
	public void selecionarCurso(){		
		setCurso((Curso) listaCursos.getRowData());
		System.out.println(getCurso().getNomeCurso());
	}
	public void selecionarCBO(){
		cbo = (Cbo) listaCBOs.getRowData();
		System.out.println("Teste");
	}
	
	public void addCT(){	
		beanVagaCT.setConhecimentotecnologico(getCt());
		beanVagaCT.setVaga(getBeanVaga());
		CTs.add(beanVagaCT);
		beanVagaCT = new Vagaconhectec();
	}
	
	public void addCurso(){	
		beanVagaCurso.setCurso(getCurso());
		beanVagaCurso.setVaga(getBeanVaga());
		Cursos.add(beanVagaCurso);
		beanVagaCurso = new Vagacurso();
	}
	
	public void gerarVaga(){
		beanVaga.setEmpregador(emp);	
		daoVaga.salvarVaga(beanVaga);
		for(Vagaconhectec ct: CTs){			
			daoVaga.salvarCT(ct);
		}
		for(Vagacurso curso: Cursos){			
			daoVaga.salvarCurso(curso);
		}
		CTs.clear();
		Cursos.clear();
	}
	
	@SuppressWarnings("rawtypes")
	public DataModel listarCT(){
		listaCTs = new ListDataModel<Conhecimentotecnologico>(daoVaga.listarCT(nomeCT));
		return listaCTs;
	}
	
	@SuppressWarnings("rawtypes")
	public DataModel listarCurso(){
		listaCursos = new ListDataModel<Curso>(daoVaga.listarCurso(nomeCurso));
		return listaCursos;
	}
	
	@SuppressWarnings("rawtypes")
	public DataModel listarCBO(){
		listaCBOs = new ListDataModel<Cbo>(daoVaga.listarCBO(nomeCBO));
		return listaCBOs;
	}


}